package com.enjoyor.soa.traffic.api.service.dubbo.pgps;

import com.enjoyor.soa.traffic.util.enums.EnumNotifyObject;
import com.enjoyor.soa.traffic.util.enums.EnumOprType;

/**
 * @author 周宏伟
 * @email zhouhongwei@enjoyor.net
 * @description 移动警务系统消息推送服务
 */

public interface CallBackService {

    /**
     * 向回调服务中注册一个监听器
     * 
     * @param listener
     *            监听器
     */
    void addListener(String key, CallBackListener listener);

    /**
     * 当记录修改事件发生时，通知所有监听器
     * 
     * @param oprType
     *            操作类型
     * @param object
     *            被改变的对象
     * @param objectName
     *            对象名称
     */
    void notifyListener(EnumOprType oprType, Object object, EnumNotifyObject objectName);

    /**
     * 返回回调服务目前的状态，以判定其工作是否正常
     * 
     * @return 0：表明回调服务工作正常，其他：表明回调服务无法正常工作
     */
    boolean isActive(String key);
}
